![【レポート】バンダイナムコスタジオ・BLUE PROTOCOL開発者が語る「クラウドを使ったゲーム開発の効率化(ゲーム開発パイプラインのクラウド化)」 #AWSSummit](https://devio2023-media.developers.io/wp-content/uploads/2020/09/eyecatch_awssummitonline_aws-summit-online-session-report.png)
【レポート】バンダイナムコスタジオ・BLUE PROTOCOL開発者が語る「クラウドを使ったゲーム開発の効率化(ゲーム開発パイプラインのクラウド化)」 #AWSSummit
今日 (9/8) から始まりました AWS Japan Summit Online 2020。オンデマンドセッション CUS-40 クラウドを使ったゲーム開発の効率化(ゲーム開発パイプラインのクラウド化) を拝聴しましたのでレポートします。
概要
ゲーム品質の高度化に伴う開発期間の長期化やゲームエンジンでのビルド時間増加の現状に、バンダイナムコスタジオのブループロトコルプロジェクトにおけるゲーム開発のビルド、ライトのベイクなどのクラウド化による開発効率化とスピード向上、コスト削減の実現と今後の展望をご説明します。
スピーカー
- 大井 隆義 氏
- 株式会社バンダイナムコスタジオ
技術スタジオ 技術スタジオ付
エグゼクティブテクニカルディレクター - BLUE PROTOCOLテクニカルディレクター
- 株式会社バンダイナムコスタジオ
- 吉田 卓哉 氏
- 株式会社バンダイナムコスタジオ
総務 IT サービス部 - 社内開発支援ツールの構築・管理・運用
- Perforce、Atlassian、Confluence、JIRA、Redmine、IncrediBuild、Alienbrain
- 株式会社バンダイナムコスタジオ
内容
- アジェンダ
- BLUE PROTOCOLとは
- ゲーム開発でのビルドパイプライン解説
- ビルドパイプラインをクラウド化した話
- 成果・わかった事
- AWS初心者のハマりどころ
- BLUE PROTOCOLとは
- オンラインRPG
- クローズドベータを4月に実施、開発中
ゲーム開発でのビルドインパイプライン解説
- Bake/Precompile = アセットをプラットフォームに合わせてパッケージング
- マップ(レベル)単位で事前計算
- 条件が増えれば増えるほどリソースが必要になる、かけ算でどんどん増える
- ライティング&影
- 広大なマップ、多くのライト
- あらかじめテクスチャに焼き込む
- ナビメッシュ
- 背景オブジェクトはアーティストがいい感じに配置する
- NPCが歩ける場所を事前に判定しておく
ビルドパイプラインのクラウド化
- クラウドゲーム開発の知見は社内にまだ少ない
- シフトしづらい事情
- 社内LAN前提で構築されたゲーム開発環境
- ユーザ認証基盤、ファイルサーバ、VCS、インフラ、セキュリティ
- スピード・トラフィック
- 大量・大容量アセット、分散ビルド環境、描画性能や操作レスポンス(4K 60fps)
- 1つのPSD(フォトショップ画像)ファイルが1GB超え
- 契約関連(NDA、EULA)
- ゲームエンジン、ミドルウェア、1stパーティ製SDK
- クラウド上で利用しても良いのか?
- 社内LAN前提で構築されたゲーム開発環境
- 出来るところからクラウド化してみる
- できるところ -> ビルドパイプライン
- 従来のビルドパイプライン構成
- Jenkins
- 社外からはアクセスNG
- 150コアの並列分散ビルド
- ビルドマシンの調達に時間がかかる、セットアップ・運用が大変、増えるJenkins・忙しいときに限って故障する
- クラウド化したビルド構成
- Jenkins on EC2
- ビルド用インスタンス:c5.24xlarge (96core)
- ベイク用:g4dn.16xlarge (64core + GPU)
- ほぼ全てのコアが利用率100%
- ポイント
- Jenkinsが1台
- ビルド実行中以外はインスタンスを停止したい
- 複数Jenkinsマシン管理から脱却
Jenkinsのジョブ解説
- ツール
- Jenkins
- AWS CLI
- AWS Systems Manager
- AWS CLIでインスタンス起動
- AWS Systems Managerでスクリプトをリモート実行
aws ssm send-command
executionTimeout
を長くする(デフォルト1時間)- ハマった(後述)
- ビルド状況を確認
aws ssm get-command-invocation
- ビルド成功/失敗判定とインスタンス停止
aws ssm get-command-invocation
でStandardErrorContent
(標準エラー出力)を確認- GetCommandInvocation - AWS Systems Manager
- ビルドの流れ
- Jenkinsインスタンスがビルドインスタンスを立ち上げ、リビジョン番号を指定して実行開始
- ビルド成果物はS3へ
クラウド化してわかったこと
- ローカル + IncrediBuildと遜色ない速度
- 大量のPCを用意するよりインスタンスの方が調達簡単
- ランニングコストは約 1660 USD/月(東京リージョン)
- 検証から導入までおよそ半年
- 11月検証スタート、翌6月よりプロジェクトでの実運用開始
- うち二ヶ月は事情により進捗なし
- 良かったこと
- 調達の待ち時間、ビルド性能、アクセスコントロール、ネット上のナレッジ、サポート
- 悪かったこと
- 従量課金制、コスト試算が大変、Visual Studioがクラウド上で使えない(ライセンスの関係)、キャッチアップが大変(サービスの追加更新が早い、うれしい悲鳴)
細かすぎて伝わらないAWS初心者のハマりどころ
細かいけど解決に地味に時間がかかった事項
- AWSアカウント作成どうしよう?
- 既存の包括契約を利用
- クラウドビルドパイプラインの構成で悩む
- AWSサービスの選択肢が多い
- AWSのソリューションアーキテクトに相談
- WindowsインスタンスにRDPできない
- 会社のファイアウォールでDenyされてた
- とつぜんRDP出来なくなった…
- Winのパスワード更新期限過ぎていた
- 金額の試算が難しい
- 偉い人からはまず費用感を聞かれる
- 1回のビルド時間とやりとりするデータ量、通信回数が分かればおおよそ試算可能
- リージョンはどこがいい?
- スピード重視(転送速度) -> 東京
- 安さ重視 -> オレゴン
- 新機能 -> Nバージニア
- ビルド開始1時間でTimeOut
executionTimeout
を設定
- インスタンスが停止しない事故を防ぎたい
- AWS Lambda + CloudWatchで長時間稼働しているインスタンスを停止
- EBSのIOPSは足りているか?
- CloudWatchでスループットを監視
- バーストバランスをチェック
将来の展望・次のアクション
- パッケージする前にアセットのベリファイを
- 完成したパッケージの自動テスト
- クラウドでBotを大量投入
- 大規模オンラインゲームの同時接続テスト
- クラウドビルドパイプラインを社内のプロジェクトへ共有・展開
- 在宅勤務に合わせたクラウド共存型の開発環境
- オフィス・自宅・社外など、どこからでもアクセス可能に
まとめ
- 社内LANに閉じていた開発を一部クラウドに移行することができた
- クラウドのメリット
- インスタンス追加の手軽さ
- 物理Jenkins管理からの手離れ
- アクセスコントロール
所管
非常に実践的なセッションでした。ちょうど本日(9/8)の基調講演で「映像業界もソフトウェア業界と似たパイプラインを持っている」という話がありましたが、まさにゲーム業界に対しても同じ事がいえるという好例ではないでしょうか。
同業界の方だけでなく、他業界の方にもためになるセッションだったと感じました。既に動画と資料は公開されていますので、是非ご覧ください。
AWS Summit Online は 9/30 まで開催です。是非ご参加ください!